<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>关于网站限制ie10以下浏览器访问的探讨--闫海的个人博客-芒果小叨</title>
<meta name="keywords" content="个人博客,闫海个人博客,ie10,html5,限制ie访问网站,网站限制浏览" />
<meta name="description" content="如果网站采用了html5，ie10以下的ie浏览器可能会出现跑位的现象。其实做兼容并不是不可以，但会非常费劲，索性顺应潮流直接淘汰ie10以下的用户。方法如下...." />
<link href="/Public/Index/css/base.css" rel="stylesheet">
<link href="/Public/Index/css/new.css" rel="stylesheet">
<link rel="stylesheet" href="/Public/Index/css/animate.css">
<link rel="stylesheet" type="text/css" href="/Public/Admin/ueditor/third-party/SyntaxHighlighter/shCoreDefault.css">
<script src="http://siteapp.baidu.com/static/webappservice/uaredirect.js" type="text/javascript"></script><script type="text/javascript">uaredirect("http://yanhai0531.com/mobile.php");</script>
<!--[if lt IE 9]>
<script src="/Public/Index/js/modernizr.js"></script>
<![endif]-->

<script type="text/javascript" src="/Public/Admin/Js/jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="/Public/Admin/ueditor/third-party/SyntaxHighlighter/shCore.js"></script>
<script type="text/javascript">
  SyntaxHighlighter.all();
</script>
<script type="text/javascript">
  var url = '/index/article';
  $(function(){
    var id = '31';
    $.post(url+'/addClick',{'id':id},function(data){
        $("#pclick").html('点击数：' + data);
    });
  })
</script>
<script type="text/javascript">
var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://");
document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3F5a97c6527b57694be765111b6a23bffc' type='text/javascript'%3E%3C/script%3E"));
</script>
</head>
<body>
<script src="/Public/Index/js/jquery.js"></script>
<div class='header animated bounceInDown'>
    <div class='wrap'>
      <div class='logo'><a data-scroll-reveal='enter from the top over 0.7s' href='/'>
         <img src='/Public/Index/images/logo.png' title='闫海的个人博客首页' alt="logo" /></a>
      </div>
      <div data-scroll-reveal='enter from the top over 0.7s' class='top-nav'>
          <ul id="topnav">
            <li><a href='/'  title='首页'>首页<span></span></a></li>
            <li><a href='/index/list/2.html' title='关于我'>关于我<span> </span></a></li><li><a href='/index/list/3.html' title='时光轴'>时光轴<span> </span></a></li><li><a href='/index/list/1.html' title='品味人生'>品味人生<span> </span></a></li><li><a href='/index/list/5.html' title='技术分享'>技术分享<span> </span></a></li>            <li><a href='/index/article/message.html'  title='给我留言'>给我留言<span></span></a></li>
          </ul>
      </div>
      <div class='clear'></div>
    </div>
</div>
<article class="blogs">
  <h1 class="t_nav">
  	<span>您当前的位置：<a href="/index.html">首页</a>&nbsp;&gt;&nbsp;
	<a href="/index/list/5.html">技术分享</a>
	&nbsp;&gt;&nbsp;<a href="/index/list/12.html">javascript</a>
	
  	</span>  <a href="/index.html" class="n1">网站首页</a>
  </h1>
  <div class="index_about">
    <h2 class="c_titile">关于网站限制ie10以下浏览器访问的探讨</h2>
    <p class="box_c"><span class="d_time">发布时间：2015-02-10 18:30</span><span>编辑：闫海</span><span id="pclick">点击数：451</span></p>
    <ul class="infos" style="word-break: break-all;">
      <p style="text-align: left;">今天检查网站发现了一些问题。其中较为严重的一个是由于网站采用了html5+css3，这样ie10以下的ie浏览器可能会出现跑位的现象。其实做兼容并不是不可以，但会非常费劲，html5我们可以通过一段js把新标签解析成块标签解决兼容性问题，但css3就不是那么顺利了，索性顺应潮流直接淘汰ie10以下的用户。<br/><br/>下面说说怎样鉴别ie浏览器并自动显示更换浏览器的信息，效果如下，假设我是ie10以下的用户，访问本站会提示这样的信息。<br/></p><p style="text-align: center;"><img src="/Uploads/ueditor/image/20150210/54d9dfd325355.jpg" alt="54d9dfd325355.jpg"/></p><p style="text-align: left;">那这个怎样实现呢？由于本人js略渣，所以只能摸索着做，一开始我是这样做的，页面底部js判断，ie9以下会执行if (!+[1,])中的内容，这样我在通过一个ajax的get请求改变页面body中元素的文本：<br/></p><pre class="brush:js;toolbar:false">&lt;script&nbsp;type=&quot;text/javascript&quot;&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!+[1,]){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.get(&#39;地址&#39;,&nbsp;function(data){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&#39;body&#39;).html(data);
&nbsp;&nbsp;&nbsp;&nbsp;})
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&lt;/script&gt;</pre><p style="text-align: left;">关于使用if (!+[1,])来判断ie9以下的浏览器，这只是利用了ie的一个bug，网上也可以搜到，原理如下：<br/></p><pre class="brush:js;toolbar:false">&lt;script&nbsp;type=&quot;text/javascript&quot;&gt;
alert([1,2]);//相当于alert([1,2].toString());&nbsp;--这在IE与非IE上都相同，都会弹出&quot;1,2&quot;
alert([1,]);//相当于alert([1,].toString());--在非IE的标准浏览器上，js引擎会自动删除最后的&quot;,&quot;，所以在IE上会弹出&quot;1,&quot;，而在非IE上会弹出&quot;1&quot;
alert(+
[1,]);//根据上面的解释，这一句在IE上相当于alert(+&quot;1,&quot;)，而在非IE上相当于alert(+&quot;1&quot;)，正号的作用在于试图将字符
串转换为数字，&quot;1,&quot;当然不是数字，而&quot;1&quot;可以转换为数字1，所以最终的结果：IE上会转换失败弹出&quot;NaN&quot;，而非IE浏览器上会弹出数字&quot;1&quot;
&nbsp;&nbsp;
//上面的+号转换字符串为数字的测试
var&nbsp;s&nbsp;=&nbsp;+&quot;5&quot;;
alert(s+1);
&nbsp;&nbsp;
//ok，到这里为止，我们知道&nbsp;+[1,]&nbsp;最终在IE为上NaN,在非IE浏览器上则为数字1
&nbsp;&nbsp;
//下面再来看看很有个性的NaN
alert(NaN==true);//弹出&nbsp;false
alert(NaN==false);//弹出&nbsp;false
alert(NaN==NaN);//弹出&nbsp;false
&nbsp;&nbsp;
//即NaN不管与谁比较都是false
alert(!NaN);//相当于alert(!(NaN==true))，根据上面的解释当然是弹出true
&nbsp;&nbsp;
&nbsp;&nbsp;
//所以，alert(!+[1,])&nbsp;最终在IE上会弹出&quot;true&quot;，下面再来看看firefox等非IE浏览器上的表现
alert(new&nbsp;Boolean(0));//false
alert(new&nbsp;Boolean(1));//true
alert(new&nbsp;Boolean(-1));//true
//即：数字0会转换为false，其它任何数字都会转换为true，所以最终在非IE浏览器上最终等效于：
alert(!1);
//即
alert(!true)//最终会得到false
&nbsp;&nbsp;
//综上所述：下面的这个判断就能判定浏览器是不是IE
if&nbsp;(!+[1,]){
&nbsp;&nbsp;&nbsp;&nbsp;alert(&quot;我是货真价实的IE浏览器!&quot;)
}
else{
&nbsp;&nbsp;&nbsp;&nbsp;alert(&quot;我不是IE!&quot;)
}
&lt;/script&gt;</pre><p style="text-align: left;">但我们知道ie9及以上版本已经修复了该bug(除非设置成兼容模式)，这样ie9还是可以正常访问到我的网站，这是我不想看到的，因为ie9只支持部分html5，所以我的网站还是不能正常展示。<br/><br/>另外还有一种方法，if (window.VBArray)来判断，但我试了试这个是所有ie都识别的，但我只是想禁止ie10一下，那怎样才能既简单又快速的判断呢？<br/><br/>借鉴了一下朋友的做法，typeof一下web worker，Web Worker是运行在后台的JavaScript，所有主流浏览器和ie10+都支持web worker，所以我们可以检测用户的浏览器是否支持它：<br/></p><pre class="brush:js;toolbar:false">&lt;script&nbsp;type=&quot;text/javascript&quot;&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(typeof(Worker)&nbsp;===&nbsp;&quot;undefined&quot;){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.get(&#39;地址&#39;,&nbsp;function(data){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&#39;body&#39;).html(data);
&nbsp;&nbsp;&nbsp;&nbsp;})
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&lt;/script&gt;</pre><p style="text-align: left;">其实思路有很多，网上还有一种方法：<br/></p><pre class="brush:js;toolbar:false">&lt;script&nbsp;type=&quot;text/javascript&quot;&gt;
var&nbsp;hasStrictMode&nbsp;=&nbsp;(function()&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;use&nbsp;strict&quot;;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;this&nbsp;===&nbsp;undefined;
}());
&lt;/script&gt;</pre><p style="text-align: left;">ECMAScript 5 (ES5)中JavaScript语法支持严格模式：”use strict”，在严格模式下，匿名函数中的this不再指向全局window（关于this），this的值为”undefined”，所以下面函数返回的值为true时，就可以判断为支持严格模式的现代浏览器。<br/>浏览器支持情况:<br/>IE10+<br/>Firefox4+<br/>Chrome11+<br/>Opera11.6+<br/>Safari5.14+<br/>解决一个问题的方法有很多，我们总是希望能够更简单方便快速，如果有更好的方法希望大家能告诉我哦。网站留言或QQ交流。&nbsp;&nbsp; <br/></p>    </ul>
    <div class="keybq">
    <p><span>关键字词</span>：ie10,html5,限制ie访问网站,网站限制浏览</p>
    
    </div>
    <div class="ad"> </div>
    <div class="nextinfo">
      <p>上一篇：<a href="/index/article/24.html">jquery拖拽效果原理</a></p>
      <p>下一篇：<a href="/index/article/36.html">jQuery解决跨域问题</a></p>
    </div>
    <div class="otherlink">
      <h2>相关文章</h2>
      <ul>
        <li><a href="/index/article/36.html" title="jQuery解决跨域问题">jQuery解决跨域问题</a></li><li><a href="/index/article/31.html" title="关于网站限制ie10以下浏览器访问的探讨">关于网站限制ie10以下浏览器访问的探讨</a></li><li><a href="/index/article/24.html" title="jquery拖拽效果原理">jquery拖拽效果原理</a></li><li><a href="/index/article/22.html" title="JS实现窗口垂直水平居中">JS实现窗口垂直水平居中</a></li><li><a href="/index/article/21.html" title="首页焦点图轮播代码示例">首页焦点图轮播代码示例</a></li><li><a href="/index/article/20.html" title="JS写一个浮动广告">JS写一个浮动广告</a></li>        
      </ul>
    </div>
  </div>
  <aside class="right">
    <div class="news" style="margin-top:10px;">
    <h3>
	<p>最新<span>文章</span></p>
</h3>
	<ul class="rank">
		<li><a href="/index/article/49.html" title="新版网站完成50%了，继续加油吧" >新版网站完成50%了，继续加油吧</a></li><li><a href="/index/article/48.html" title="【Laravel5教程】mac+apache+mysql配置多站点(一)" >【Laravel5教程】mac+apache+mysql配置多站点(一)</a></li><li><a href="/index/article/47.html" title="Laravel5.1配置" >Laravel5.1配置</a></li><li><a href="/index/article/46.html" title="laravel5.1安装" >laravel5.1安装</a></li><li><a href="/index/article/45.html" title="初探Laravel5" >初探Laravel5</a></li><li><a href="/index/article/44.html" title="写了一个PHP框架" >写了一个PHP框架</a></li><li><a href="/index/article/42.html" title="当遇到问题时应该怎样去处理？" >当遇到问题时应该怎样去处理？</a></li><li><a href="/index/article/41.html" title="我的近况和计划" >我的近况和计划</a></li>	</ul>
<h3 class="ph">
    <p>点击<span>排行</span></p>
</h3>
	<ul class="paih">
    	<li><a href="/index/article/31.html" title="关于网站限制ie10以下浏览器访问的探讨" >关于网站限制ie10以下浏览器访问的探讨</a></li><li><a href="/index/article/46.html" title="laravel5.1安装" >laravel5.1安装</a></li><li><a href="/index/article/47.html" title="Laravel5.1配置" >Laravel5.1配置</a></li><li><a href="/index/article/45.html" title="初探Laravel5" >初探Laravel5</a></li><li><a href="/index/article/41.html" title="我的近况和计划" >我的近况和计划</a></li>	</ul>
<h3 class="links">
	<p>友情<span>链接</span></p>
</h3>
	<ul class="website">
		<li><a href="http://www.vso8.com" target="_blank">v8视频</a></li><li><a href="http://www.huanyun.net.cn" target="_blank">焕云企业管理有限公司</a></li><li><a href="http://www.sinkuo.com" target="_blank">济宁网站建设</a></li>	</ul>    </div>  
    <!-- Baidu Button BEGIN -->
    <div id="bdshare" class="bdshare_t bds_tools_32 get-codes-bdshare"><a class="bds_tsina"></a><a class="bds_qzone"></a><a class="bds_tqq"></a><a class="bds_renren"></a><span class="bds_more"></span><a class="shareCount"></a></div>
    <script type="text/javascript" id="bdshare_js" data="type=tools&amp;uid=6574585" ></script> 
    <script type="text/javascript" id="bdshell_js"></script> 
    <script type="text/javascript">

document.getElementById("bdshell_js").src = "http://bdimg.share.baidu.com/static/js/shell_v2.js?cdnversion=" + Math.ceil(new Date()/3600000)
</script> 
    <!-- Baidu Button END -->   
    <a onclick="javascript:window.open('/Public/Index/images/weixin.jpg','a', 'height=600,width=600,status=no,toolbar=no,menubar=no,location=no,scrollbars=no');" class="weixin"> </a></aside> 
</article>
<footer>
  <p><a href="http://www.miitbeian.gov.cn/" target="_blank">Copyright © 2015 yanhai All Rights Reversed | 鲁ICP备15004472号-1</a> </p>
</footer>
<script src="/Public/Index/js/silder.js"></script>

<script type="text/javascript">
     if(typeof(Worker) === "undefined"){
     	$.get('/Public/Html5/html5.html', function(data){
			$('body').html(data);
		})
     }
</script>

</body>
</html>